# 给一个链表，若其中包含环，请找出该链表的环的入口结点，否则，输出null。


class Solution:
    def EntryNodeOfLoop(self, pHead):
        # write code here
        if self.isCircle(pHead):#有环
            temp = []
            while pHead:
                temp.append(pHead)
                if temp.count(pHead)>1:
                    return pHead
                pHead = pHead.next
        else:
            return None


    def isCircle(self,root):
        if root.next==None:
            return False
        if root.next.next == None:
            return False
        p1 = root.next
        p2 = root.next.next
        if p1==p2:
            return True
        while p1!=p2 and p1 and p2:#无环链表肯定能走到最后一个节点，然后指向null,而且p1永远追不上p2,而有环链表，那就是死循环，但是p1和p2肯定有相遇的时候
            p1 = p1.next
            if p2.next == None:
                return False
            if p2.next.next == None:
                return False
            p2 = p2.next.next
            if p1==p2:
                return True

        return False




